import React, { Component } from 'react'

export default class Count extends Component {
  constructor() {
    super()
    // this.属性 = 值
    // 构造器的this一定是当前组件实例
    // this.count = 0 // 这个只能说是组件的私有数据,不是状态
    this.state = {
      count: 0,
      msg: 'hello state',
    } //这个才是组件状态
  }
  render() {
    // console.log('render执行了')
    // render函数中的this也一定是当前组件实例
    return (
      <div>
        <p id="c">{this.state.count}</p>
        <p>{this.state.msg}</p>
        <button
          onClick={() => {
            this.setState({
              count: this.state.count + 1,
              msg: 'xxx',
            })
            // this.setState({
            //   count: this.state.count + 2,
            // })
            // this.setState({
            //   count: this.state.count + 3,
            // })

            // 连续调用多次,会合并成一次
            // this.setState({
            // //   count: this.state.count + 1,
            //   msg: 'xxx',
            // //   count: this.state.count + 2,
            //   count: this.state.count + 3,
            // })

            // this.setState((newState) => {
            //   // 上一次数据修改完毕之后调用
            //   // newState 最新的状态数据
            //   //   console.log(newState)
            //   return {
            //     count: newState.count + 2,
            //   }
            // })

            this.setState(
              (newState) => {
                // 当上一次state数据修改完毕
                console.log(
                  '第一个回调',
                  newState,
                  document.getElementById('c').innerText
                )
                return {
                  count: newState.count + 3,
                }
              },
              () => {
                // 当state数据修改完毕,并且页面更新完毕才会调用
                console.log(
                  '第二个回调',
                  this.state,
                  document.getElementById('c').innerText
                )
              }
            )
          }}
        >
          +
        </button>
      </div>
    )
  }
}
